package main

import "fmt"

// 写一个函数 RemoveStringSlice() 将从 start 到 end 索引的元素从切片中移除。

func RemoveStringSlice(s []string, start, end int) (r []string) {
	l := len(s)
	if start < 0 {
		start = 0
	}
	if start > l-1 {
		start = l - 1
	}

	if end < 0 {
		end = 0
	}
	if end > l-1 {
		end = l - 1
	}
	if start > end {
		start = end
	}
	len_r := end - start + 1
	r = make([]string, l-len_r)
	for i, str := range s {
		if i < start {
			r[i] = str
		}
		if i > end {
			r[i-len_r] = str
		}

	}
	return
}

func rmIntSli(dst []int, s, e int) (r []int) {
	l := len(dst)
	if s < 0 {
		s = 0
	}
	if s > l-1 {
		s = l - 1
	}

	if e < 0 {
		e = 0
	}
	if e > l-1 {
		e = l - 1
	}
	if s > e {
		s = e
	}

	r = make([]int, 0, l)
	r = append(r, dst[0:s]...)
	r = append(r, dst[e+1:]...)

	// len_r := e - s + 1
	// r = make([]int, l-len_r)
	// if s > 0 {
	// 	copy(r[0:s], dst[0:s])
	// }
	// copy(r[s:], dst[e+1:])

	return
}

func main() {
	s := []string{"zhao", "wang", "sun", "li"}
	fmt.Println("after remove slice: ", RemoveStringSlice(s, 1, 1))
	sli := []int{2, 3, 4, 5}
	fmt.Println("after remove int slice: ", rmIntSli(sli, 1, 1))
}
